//
//  NHBaseRequest.h
//  LZNeiHan
//
//  Created by 梁梓烽 on 16/10/2.
//  Copyright © 2016年 liangzifeng. All rights reserved.
//

#import <Foundation/Foundation.h>

/*
 设计一个类的时候:
 考虑它是什么,父类是什么
 考虑它的作用是什么,需要什么参数
 >有什么状态量(就是每个对象都有可能不同的量,就设置为属性),属性考虑要暴露给外界还是不暴露给外界.考虑如果外界设置的话,容错处理重写set方法
 >方法接口,一般会先设计成类方法,但在写的过程中可能会发现类方法中调用了成员变量,那么再改成对象方法.
 外面想通过它拿到什么值 ,通过什么方式和外界进行传值(block 代理 属性 都可以传值), block和代理并存的时候考虑block优先级先行
 考虑它的创建方式(单例?类工厂方法,自定义构造方法)
 
 
 像这个类,我就想直接调NHBaseRequest的一个接口, 然后就拿到 success response message这3个值
 底层是调用 afn  afhttpsessionmanager 的get  set 接口,对比afn需要的参数和你想通过这个接口拿到的值之间的差别,
 再去写代码去验证
 
 */




/** 用来传值的delegate*/
@protocol NHBaseRequestFinishRequestDelegate <NSObject>

-(void)BaseRequestFinishRequest:(BOOL)success response:(id)response message:(NSString *)message;
@end

/** 请求完成的回调block */
typedef  void(^NHBaseRequestFinishHandle)(BOOL success,id response, NSString *message);


@interface NHBaseRequest : NSObject

/** url */
@property(nonatomic,strong)NSString *url;

/** 请求类型,默认是get请求 */
@property(nonatomic,assign)BOOL is_Post;

/** 代理 */
@property(nonatomic,weak)id<NHBaseRequestFinishRequestDelegate>  deleage;

#pragma mark -快速构造方法
-(instancetype)nh_request;

-(instancetype)nh_requestWith:(NSString *)url;

-(instancetype)nh_requestWith:(NSString *)url  FinishHandle:(NHBaseRequestFinishHandle)handle;


#pragma mark -请求接口
-(void)nh_sendRequest;

-(void)nh_sendRequestWithComplemation:(NHBaseRequestFinishHandle)handle;
@end
